/* tpa-handle.h
#include "tpa-enums.h"
#include <dbus/dbus-glib-bindings.h>
#include <tapioca/client/tpa-object.h>
*/

/* tpa-handle.c
#include <tapioca/base/tpa-debug.h>
#include <tapioca/base/tpa-connection-bindings.h>
#include <tapioca/base/tpa-signals-marshal.h>
*/

using GLib;
using DBus;

private enum arg
{
    ZERO,
    SERVICE,
    PATH,
    INTERFACE,
    OBJECT
}

struct Tpa.Proxies
{
    DBus.Proxy proxy;
    HashTable table;
}

namespace Tpa
{
    public abstract class Object : GLib.Object
    {
        public char *name;
        public HashTable proxies;

        private DBus.Proxy proxy;
        private string service;
        private string path;
        private string _interface;
        private bool reference;
        private bool disposed;

        [NoArrayLength ()]
        public DBus.Proxy get_proxy (string name)
        {
        }

        public PtrArray get_all_proxies ()
        {
        }

        public void add_proxy (DBus.Proxy proxy)
        {
        }

        public void add_proxy_with_name (string name, DBus.Proxy proxy)
        {
        }

        public void remove_proxy (string name)
        {
        }

        public bool has_proxy (string name)
        {
        }

        public void connect_signal (string name,
                                    string signal_name,
                                    Callback callback,
                                    pointer data)
        {
        }

    }
}
